//package com.erp.user.service.impl;
//
//import cn.hutool.core.bean.BeanUtil;
//import com.alibaba.fastjson.JSONObject;
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
//import com.baomidou.mybatisplus.core.toolkit.Wrappers;
//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
//import com.erp.user.domain.ErpAgentInfo;
//import com.erp.user.domain.ErpBranchOfficeInfo;
//import com.erp.user.domain.bo.ErpAgentInfoBo;
//import com.erp.user.domain.vo.ErpAgentInfoVo;
//import com.erp.user.mapper.ErpAgentInfoMapper;
//import com.erp.user.mapper.ErpBranchOfficeInfoMapper;
//import com.erp.user.service.IErpAgentInfoService;
//import com.ruoyi.common.core.domain.PageQuery;
//import com.ruoyi.common.core.domain.R;
//import com.ruoyi.common.core.utils.oldUtils.StringUtils;
//import com.ruoyi.common.core.web.oldPage.TableDataInfo;
//import com.ruoyi.common.datascope.annotation.DataScope;
//import com.ruoyi.common.security.utils.SecurityUtils;
//import com.ruoyi.system.api.RemoteDeptService;
//import com.ruoyi.system.api.RemoteUserService;
//import com.ruoyi.system.api.domain.SysUser;
//import lombok.RequiredArgsConstructor;
//import net.sf.jsqlparser.statement.select.Offset;
//import org.springframework.stereotype.Service;
//
//import java.util.Collection;
//import java.util.List;
//import java.util.Map;
//
///**
// * 代理开户信息Service业务层处理
// *
// * @author erp
// * @date 2023-05-08
// */
//@RequiredArgsConstructor
//@Service
//public class ErpAgentInfoServiceImpl implements IErpAgentInfoService {
//
//	private final ErpAgentInfoMapper baseMapper;
//	private final RemoteUserService userService;
//	private final ErpBranchOfficeInfoMapper branchMapper;
//    private final RemoteDeptService deptService;
//
//	/**
//	 * 查询代理开户信息
//	 */
//	@Override
//	public ErpAgentInfoVo queryById(Long id) {
//		ErpAgentInfoVo vo = baseMapper.selectVoById(id);
//		Long userId = vo.getUserId();
//		R<Object> objectR = userService.selectUserById(userId);
//		if (200 == objectR.getCode()) {
//            JSONObject data = JSONObject.parseObject(JSONObject.toJSONString(objectR.getData()));
//            vo.setEmail(data.getString("email"));
//			vo.setPhonenumber(data.getString("phonenumber"));
//			vo.setUserName(data.getString("userName"));
//		}
//
//		return vo;
//	}
//
//	/**
//	 * 查询代理开户信息列表
//	 */
//	@Override
//	public TableDataInfo<ErpAgentInfoVo> queryPageList(ErpAgentInfoBo bo, PageQuery pageQuery) {
//		LambdaQueryWrapper<ErpAgentInfo> lqw = buildQueryWrapper(bo);
////		Page<ErpAgentInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
//        //TODO 用户名，手机号条件分页查询
////		Page<ErpAgentInfoVo> result = baseMapper.selectVoPageByUser(pageQuery.build(), bo);
////		Page<ErpAgentInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
//
//        Page<ErpAgentInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
//		result.getRecords().forEach(vo -> {
//			// 获取用户信息
//			Long userId = vo.getUserId();
//			R<Object> objectR = userService.selectUserById(userId);
//            String toJSONString = JSONObject.toJSONString(objectR.getData());
//            SysUser sysUser = JSONObject.parseObject(toJSONString, SysUser.class);
//			if (sysUser != null) {
//				vo.setEmail(sysUser.getEmail());
//				vo.setPhonenumber(sysUser.getPhonenumber());
//				vo.setUserName(sysUser.getUserName());
//			}
//			// 如果是代理推代理,直推名就是代理名,分公司为空; 分公司推代理,直推名为空,分公司名为
//			// 获取直推名
//			String parentId = vo.getParentId();
//			if (parentId != null) {
//				Long agentId = Long.parseLong(parentId);
//				ErpAgentInfo agentInfo = baseMapper.selectById(agentId);
//				if (agentInfo != null) {
//					String corporateName = baseMapper.selectById(agentId).getCorporateName();
//					vo.setParentId(corporateName);
//				}else {
//					vo.setParentId(null);
//				}
//			}
//			// 获取分公司名
//			String branchId = vo.getBranchId();
//			if (branchId != null) {
//				Long branchIds = Long.parseLong(branchId);
//				ErpBranchOfficeInfo branchOfficeInfo = branchMapper.selectById(branchIds);
//				if (branchOfficeInfo != null) {
//					String corporateName = branchOfficeInfo.getCorporateName();
//					vo.setBranchId(corporateName);
//				}else {
//					vo.setBranchId(null);
//				}
//
//			}
//		});
//
//
//
//        return TableDataInfo.build(result);
//	}
//
//	/**
//	 * 查询代理开户信息列表
//	 */
//	@Override
//    @DataScope(deptAlias = "d", userAlias = "u")
//	public List<ErpAgentInfoVo> queryList(ErpAgentInfoBo bo) {
//		LambdaQueryWrapper<ErpAgentInfo> lqw = buildQueryWrapper(bo);
//		return baseMapper.selectVoList(lqw);
//	}
//
//	private LambdaQueryWrapper<ErpAgentInfo> buildQueryWrapper(ErpAgentInfoBo bo) {
//		Map<String, Object> params = bo.getParams();
//        Long loginUserId = SecurityUtils.getUserId();
//		LambdaQueryWrapper<ErpAgentInfo> lqw = Wrappers.lambdaQuery();
//        if (loginUserId != 1L) {
////            queryWrapper.eq(ErpAgentInfo::getUserId, loginUserId);
//            List<Long> list = deptService.selectDeptIdsByDeptId(loginUserId);
//            lqw.in(ErpAgentInfo::getDeptId,list);
//        }
//        lqw.eq(bo.getUserId() != null, ErpAgentInfo::getUserId, bo.getUserId());
//		lqw.eq(StringUtils.isNotBlank(bo.getCode()), ErpAgentInfo::getCode, bo.getCode());
//		lqw.like(StringUtils.isNotBlank(bo.getRealName()), ErpAgentInfo::getRealName, bo.getRealName());
//		lqw.eq(StringUtils.isNotBlank(bo.getAgentIdCard()), ErpAgentInfo::getAgentIdCard, bo.getAgentIdCard());
////        lqw.like(StringUtils.isNotBlank(bo.getBranchName()), ErpAgentInfo::getBranchName, bo.getBranchName());
//		lqw.like(StringUtils.isNotBlank(bo.getLegalName()), ErpAgentInfo::getLegalName, bo.getLegalName());
//		lqw.like(StringUtils.isNotBlank(bo.getCorporateName()), ErpAgentInfo::getCorporateName, bo.getCorporateName());
//		lqw.eq(StringUtils.isNotBlank(bo.getCreditCode()), ErpAgentInfo::getCreditCode, bo.getCreditCode());
//		lqw.eq(StringUtils.isNotBlank(bo.getBusinessLicense()), ErpAgentInfo::getBusinessLicense,
//				bo.getBusinessLicense());
//		lqw.eq(StringUtils.isNotBlank(bo.getLegalIdCard()), ErpAgentInfo::getLegalIdCard, bo.getLegalIdCard());
//		lqw.eq(StringUtils.isNotBlank(bo.getContract()), ErpAgentInfo::getContract, bo.getContract());
//		lqw.eq(StringUtils.isNotBlank(bo.getCertificate()), ErpAgentInfo::getCertificate, bo.getCertificate());
//		lqw.eq(StringUtils.isNotBlank(bo.getParentId()), ErpAgentInfo::getParentId, bo.getParentId());
//		lqw.eq(StringUtils.isNotBlank(bo.getParentIds()), ErpAgentInfo::getParentIds, bo.getParentIds());
//		lqw.eq(bo.getBranchId() != null, ErpAgentInfo::getBranchId, bo.getBranchId());
//		lqw.eq(StringUtils.isNotBlank(bo.getRevision()), ErpAgentInfo::getRevision, bo.getRevision());
//		return lqw;
//	}
//
//	/**
//	 * 新增代理开户信息
//	 */
//	@Override
//	public Boolean insertByBo(ErpAgentInfoBo bo) {
//		ErpAgentInfo add = BeanUtil.toBean(bo, ErpAgentInfo.class);
//		validEntityBeforeSave(add);
//		boolean flag = baseMapper.insert(add) > 0;
//		if (flag) {
//			bo.setId(add.getId());
//		}
//		return flag;
//	}
//
//	/**
//	 * 修改代理开户信息
//	 */
//	@Override
//	public Boolean updateByBo(ErpAgentInfoBo bo) {
//		ErpAgentInfo update = BeanUtil.toBean(bo, ErpAgentInfo.class);
//		validEntityBeforeSave(update);
//		return baseMapper.updateById(update) > 0;
//	}
//
//	/**
//	 * 保存前的数据校验
//	 */
//	private void validEntityBeforeSave(ErpAgentInfo entity) {
//		// TODO 做一些数据校验,如唯一约束
//	}
//
//	/**
//	 * 批量删除代理开户信息
//	 */
//	@Override
//	public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
//		if (isValid) {
//			// TODO 做一些业务上的校验,判断是否需要校验
//		}
//		return baseMapper.deleteBatchIds(ids) > 0;
//	}
//
//	@Override
//	public ErpAgentInfo selectByCode(String code) {
//		return baseMapper.selectOne(new LambdaQueryWrapper<ErpAgentInfo>().eq(ErpAgentInfo::getCode, code));
//	}
//
//	@Override
//	public ErpAgentInfo selectById(Long id) {
//		return baseMapper.selectById(id);
//	}
//}
